<?php

require_once 'ExtratorAbstrato.php';
require_once 'FiltroTags.php';

/**
 * @author tsalles
 * @copyright 2008
 */

class ExtratorTorrents extends ExtratorAbstrato {
    
    public function ExtratorLinks() {
        $this->filtro = new FiltroTags("a", "href", "*");
    }
    
   /**
    * Realiza a filtragem tratando apenas os elementos XML_ELEMENT_NODE,
    * analisando o nome da tag, o atributo e o respectivo valor.
    */
    // ATENÇÃO, AS VEZES EH MELOR TORNAR ISSO AKI ESPECIFICO PARA O PIRATE BAY,
    // OBTENDO APENAS OS LINKS RELATIVOS A TORRENTS COM SEEDERS... AI MUDA A PARADA
    // PQ NAO SERAH MAIS EXTRATOR DE LINKS, E SIM, EXTRATOR DE TORRENTS... !!!!
    /**
      TABLE -> id = searchResult
      pega o quarto td e o sexto eh o de seeders !!
    */
    public function aplicaFiltro(DOMDocument $doc, 
                                 $conteudo, 
                                 $filtro) {
        $torrents = array();
        // TODO Alterar para utilizar os atributos do filtro definido !!
        $tabelaResultado = $doc->getElementById("searchResult");
        if ($tabelaResultado === NULL) return;
        $linhas = $tabelaResultado->getElementsByTagName("tr");
        $torrentsDescobertos = array();
        $torrentDescoberto = array();
        // primeira linha é cabeçalho, e é descartada
        for($i = 1; $i < $linhas->length; $i++) {
            $colunas = $linhas->item($i)->getElementsByTagName("td");
            $torrent = $colunas->item(3)->getElementsByTagName("a")->item(0)->getAttribute("href");
            $seeders = $colunas->item(5)->nodeValue;
            // NADA DE TORRENTS SEM SEEDERS !!! 
            if ($seeders > 0) {
              $torrentDescoberto[torrent] = $torrent;
              $torrentDescoberto[seeders] = $seeders;
               // Adiciona o torrent descoberto apenas se ela não estiver 
               // sido descoberta e se ele possuir seeders !
               $igual = false;
               foreach($torrentsDescobertos as $tr) {
                    if (strcasecmp($torrentDescoberto[torrent],$tr[torrent]) == 0) {
                        $igual = true;
                    }
                }
                if (!$igual) {
                    array_push($torrentsDescobertos, $torrentDescoberto);
                }
             }
        }
        return $torrentsDescobertos;
    }
}

?>